/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufc.quixada.adrs.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * @author fernando
 */
public class QuestionarioQuantitativo extends Bean {

    private List<Movimentacao> movimentacoes;
    private List<Rebanho> rebanhos;
    private List<Descarte> descartes;
    private Visita visita;
    private Date dataAtualizacao;
    private String relato;

    public QuestionarioQuantitativo() {
        movimentacoes = new ArrayList<Movimentacao>();
        rebanhos = new ArrayList<Rebanho>();
        descartes = new ArrayList<Descarte>();
        visita = null;
        dataAtualizacao = null;
        relato = null;
    }

    public String getRelato() {
        return relato;
    }

    public void setRelato(String relato) {
        this.relato = relato;
    }

    public Date getDataAtualizacao() {
        return dataAtualizacao;
    }

    public void setDataAtualizacao(Date dataAtualizacao) {
        this.dataAtualizacao = dataAtualizacao;
    }

    public List<Descarte> getDescartes() {
        return descartes;
    }

    public void setDescartes(List<Descarte> descartes) {
        this.descartes = descartes;
    }

    public List<Movimentacao> getMovimentacoes() {
        return movimentacoes;
    }

    public void setMovimentacoes(List<Movimentacao> movimentacoes) {
        this.movimentacoes = movimentacoes;
    }

    public List<Rebanho> getRebanhos() {
        return rebanhos;
    }

    public void setRebanhos(List<Rebanho> rebanhos) {
        this.rebanhos = rebanhos;
    }

    public Visita getVisita() {
        return visita;
    }

    public void setVisita(Visita visita) {
        this.visita = visita;
    }

    public Movimentacao buscaMovimentacaoDoTipo(TipoAnimal tipoAnimal) {
        for (Movimentacao m : movimentacoes) {
            if (m.getTipoAnimal().equals(tipoAnimal)) {
                return m;
            }
        }
        return null;
    }

    public Rebanho buscaRebanhoDoTipo(TipoAnimal tipoAnimal, String sexo, FaixaEtaria idade) {
        for (Rebanho r : rebanhos) {
            if (r.getTipoAnimal().equals(tipoAnimal)
                    && sexo.equals(r.getSexo())
                    && r.getFaixaEtaria().getId().equals(idade.getId())) {
                return r;
            }
        }
        return null;
    }

    public Integer totalizaRebanhos(TipoAnimal tipoAnimal) {
        Integer soma = 0;
        for (Rebanho r : rebanhos) {
            if (r.getTipoAnimal().equals(tipoAnimal)) {
                soma += r.getQuantidade();
            }
        }
        return soma;
    }

    public Integer totalizaRebanhos(TipoAnimal tipoAnimal, String sexo) {
        Integer soma = 0;
        for (Rebanho r : rebanhos) {
            if (r.getTipoAnimal().equals(tipoAnimal)
                    && sexo.equals(r.getSexo())) {
                soma += r.getQuantidade();
            }
        }
        return soma;
    }

    public Descarte buscaDescarteDoTipo(TipoAnimal tipoAnimal, String sexo, Integer mes) {
        for (Descarte d : descartes) {
            if (d.getTipoAnimal().equals(tipoAnimal)
                    && sexo.equals(d.getSexo())
                    && mes.equals(d.getMes())) {
                return d;
            }
        }
        return null;
    }

    public Integer totalizaDescartes(Integer mes) {
        Integer soma = 0;
        for (Descarte d : descartes) {
            if (mes.equals(d.getMes())) {
                soma += d.getQuantidade();
            }
        }
        return soma;
    }

    public Integer getQuantidade(Rebanho r) {
        if (r != null) {
            return r.getQuantidade();
        } else {
            return 0;
        }
    }

    public Integer getQuantidade(Descarte d) {
        if (d != null) {
            return d.getQuantidade();
        } else {
            return 0;
        }
    }
}
